module(
    name = "grpc-java",
    compatibility_level = 0,
    repo_name = "io_grpc_grpc_java",
    version = "1.67.1",  # CURRENT_GRPC_VERSION
)

# GRPC_DEPS_START
IO_GRPC_GRPC_JAVA_ARTIFACTS = [
    "com.google.android:annotations:4.1.1.4",
    "com.google.api.grpc:proto-google-common-protos:2.29.0",
    "com.google.auth:google-auth-library-credentials:1.23.0",
    "com.google.auth:google-auth-library-oauth2-http:1.23.0",
    "com.google.auto.value:auto-value-annotations:1.11.0",
    "com.google.auto.value:auto-value:1.11.0",
    "com.google.code.findbugs:jsr305:3.0.2",
    "com.google.code.gson:gson:2.11.0",
    "com.google.errorprone:error_prone_annotations:2.28.0",
    "com.google.guava:failureaccess:1.0.1",
    "com.google.guava:guava:33.2.1-android",
    "com.google.j2objc:j2objc-annotations:3.0.0",
    "com.google.re2j:re2j:1.7",
    "com.google.truth:truth:1.4.2",
    "com.squareup.okhttp:okhttp:2.7.5",
    "com.squareup.okio:okio:2.10.0",  # 3.0+ needs swapping to -jvm; need work to avoid flag-day
    "io.netty:netty-buffer:4.1.110.Final",
    "io.netty:netty-codec-http2:4.1.110.Final",
    "io.netty:netty-codec-http:4.1.110.Final",
    "io.netty:netty-codec-socks:4.1.110.Final",
    "io.netty:netty-codec:4.1.110.Final",
    "io.netty:netty-common:4.1.110.Final",
    "io.netty:netty-handler-proxy:4.1.110.Final",
    "io.netty:netty-handler:4.1.110.Final",
    "io.netty:netty-resolver:4.1.110.Final",
    "io.netty:netty-tcnative-boringssl-static:2.0.65.Final",
    "io.netty:netty-tcnative-classes:2.0.65.Final",
    "io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.110.Final",
    "io.netty:netty-transport-native-unix-common:4.1.110.Final",
    "io.netty:netty-transport:4.1.110.Final",
    "io.opencensus:opencensus-api:0.31.0",
    "io.opencensus:opencensus-contrib-grpc-metrics:0.31.0",
    "io.perfmark:perfmark-api:0.27.0",
    "junit:junit:4.13.2",
    "org.apache.tomcat:annotations-api:6.0.53",
    "org.codehaus.mojo:animal-sniffer-annotations:1.24",
]
# GRPC_DEPS_END

bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "googleapis", repo_name = "com_google_googleapis", version = "0.0.0-20240819-fe8ba054a")
# CEL Spec may be removed when cncf/xds MODULE is no longer using protobuf 27.x
bazel_dep(name = "cel-spec", repo_name = "dev_cel", version = "0.15.0")
bazel_dep(name = "grpc", repo_name = "com_github_grpc_grpc", version = "1.66.0.bcr.2")
bazel_dep(name = "grpc-proto", repo_name = "io_grpc_grpc_proto", version = "0.0.0-20240627-ec30f58")
bazel_dep(name = "protobuf", repo_name = "com_google_protobuf", version = "23.1")
bazel_dep(name = "rules_cc", version = "0.0.9")
bazel_dep(name = "rules_java", version = "5.3.5")
bazel_dep(name = "rules_go", repo_name = "io_bazel_rules_go", version = "0.46.0")
bazel_dep(name = "rules_jvm_external", version = "6.0")
bazel_dep(name = "rules_proto", version = "5.3.0-21.7")

non_module_deps = use_extension("//:repositories.bzl", "grpc_java_repositories_extension")

use_repo(
    non_module_deps,
    "com_github_cncf_xds",
    "envoy_api",
)

grpc_repo_deps_ext = use_extension("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_repo_deps_ext")

use_repo(
    grpc_repo_deps_ext,
    "com_envoyproxy_protoc_gen_validate",
    "opencensus_proto",
)

maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")

maven.install(
    artifacts = IO_GRPC_GRPC_JAVA_ARTIFACTS,
    repositories = [
        "https://repo.maven.apache.org/maven2/",
    ],
    strict_visibility = True,
)

use_repo(maven, "maven")

maven.override(
    coordinates = "com.google.protobuf:protobuf-java",
    target = "@com_google_protobuf//:protobuf_java",
)

maven.override(
    coordinates = "com.google.protobuf:protobuf-java-util",
    target = "@com_google_protobuf//:protobuf_java_util",
)

maven.override(
    coordinates = "com.google.protobuf:protobuf-javalite",
    target = "@com_google_protobuf//:protobuf_javalite",
)

maven.override(
    coordinates = "io.grpc:grpc-alts",
    target = "@io_grpc_grpc_java//alts",
)

maven.override(
    coordinates = "io.grpc:grpc-api",
    target = "@io_grpc_grpc_java//api",
)

maven.override(
    coordinates = "io.grpc:grpc-auth",
    target = "@io_grpc_grpc_java//auth",
)

maven.override(
    coordinates = "io.grpc:grpc-census",
    target = "@io_grpc_grpc_java//census",
)

maven.override(
    coordinates = "io.grpc:grpc-context",
    target = "@io_grpc_grpc_java//context",
)

maven.override(
    coordinates = "io.grpc:grpc-core",
    target = "@io_grpc_grpc_java//core:core_maven",
)

maven.override(
    coordinates = "io.grpc:grpc-googleapis",
    target = "@io_grpc_grpc_java//googleapis",
)

maven.override(
    coordinates = "io.grpc:grpc-grpclb",
    target = "@io_grpc_grpc_java//grpclb",
)

maven.override(
    coordinates = "io.grpc:grpc-inprocess",
    target = "@io_grpc_grpc_java//inprocess",
)

maven.override(
    coordinates = "io.grpc:grpc-netty",
    target = "@io_grpc_grpc_java//netty",
)

maven.override(
    coordinates = "io.grpc:grpc-netty-shaded",
    target = "@io_grpc_grpc_java//netty:shaded_maven",
)

maven.override(
    coordinates = "io.grpc:grpc-okhttp",
    target = "@io_grpc_grpc_java//okhttp",
)

maven.override(
    coordinates = "io.grpc:grpc-protobuf",
    target = "@io_grpc_grpc_java//protobuf",
)

maven.override(
    coordinates = "io.grpc:grpc-protobuf-lite",
    target = "@io_grpc_grpc_java//protobuf-lite",
)

maven.override(
    coordinates = "io.grpc:grpc-rls",
    target = "@io_grpc_grpc_java//rls",
)

maven.override(
    coordinates = "io.grpc:grpc-services",
    target = "@io_grpc_grpc_java//services:services_maven",
)

maven.override(
    coordinates = "io.grpc:grpc-stub",
    target = "@io_grpc_grpc_java//stub",
)

maven.override(
    coordinates = "io.grpc:grpc-testing",
    target = "@io_grpc_grpc_java//testing",
)

maven.override(
    coordinates = "io.grpc:grpc-xds",
    target = "@io_grpc_grpc_java//xds:xds_maven",
)

maven.override(
    coordinates = "io.grpc:grpc-util",
    target = "@io_grpc_grpc_java//util",
)

switched_rules = use_extension("@com_google_googleapis//:extensions.bzl", "switched_rules")

switched_rules.use_languages(java = True)
